package br.com.condominio.controller;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.event.AjaxBehaviorEvent;

import br.com.condominio.entity.Bloco;
import br.com.condominio.service.BlocoService;

@ViewScoped
@ManagedBean(name = "blocoBean")
public class BlocoBean extends BaseBean {

	private static final long serialVersionUID = 1L;
	@ManagedProperty("#{blocoService}")
	private BlocoService model;
	private Bloco bloco;
	private List<Bloco> blocos;
	private String nomeBloco;
	private boolean editMode;
	
	public BlocoService getModel() {
		return model;
	}

	public void setModel(BlocoService model) {
		this.model = model;
	}

	public Bloco getBloco() {
		if(bloco == null){
			bloco = new Bloco();
		}
		return bloco;
	}

	public void setBloco(Bloco bloco) {
		this.bloco = bloco;
	}

	public void salvar() {
		System.out.println("idf bloco " + bloco.getBloCodigo());
		
		if (bloco.getBloCodigo() == null
				|| bloco.getBloCodigo().intValue() == 0) {
			bloco = model.persistBloco(bloco);
			bloco = new Bloco();
			addInfoMessage("Bloco criado com sucesso.");
		} else {
			model.updateBloco(bloco);
			addInfoMessage("Bloco alterado com sucesso.");
		}
	}

	public void delete() {
		model.deleteBloco(bloco);
		if (nomeBloco != null && !nomeBloco.isEmpty()){
			blocos = model.getBlocosByName(nomeBloco);
		}else{
			blocos = model.getAllBlocos();
		}

		// return "";
	}

	public void create() {
		this.bloco = new Bloco();
		this.editMode = true;
	}

	public void update() {
		this.editMode = true;
	}

	public void cancel() {
		this.editMode = false;
	}

	public void filtrarBloco(AjaxBehaviorEvent event) {
		if (nomeBloco != null && !nomeBloco.isEmpty()) {
			blocos = model.getBlocosByName(nomeBloco);
		} else {
			blocos = model.getAllBlocos();
		}
	}

	public List<Bloco> getBlocos() {
		if (blocos == null) {
			blocos = model.getAllBlocos();
		}
		return blocos;
	}

	public void setBlocos(List<Bloco> blocos) {
		this.blocos = blocos;
	}

	public String getNomeBloco() {
		return nomeBloco;
	}

	public void setNomeBloco(String nomeBloco) {
		this.nomeBloco = nomeBloco;
	}

	public boolean isEditMode() {
		return editMode;
	}

	public void setEditMode(boolean editMode) {
		this.editMode = editMode;
	}

}
